From 3060252e660c679163e72f971e5fa181bad766df Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C3=98yvind=20Kol=C3=A5s?= Date: Sun, 3 Sep 2017 01:00:49 +0200 Subject: [PATCH] babl: detect sRGB profiles from matrix When TRCs also are matching, return internal sRGB instead of creating a duplicate. --- babl/babl-icc.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/babl/babl-icc.c b/babl/babl-icc.c index 07ec1e7..a79f21b 100644 --- a/babl/babl-icc.c +++ b/babl/babl-icc.c @@ -756,7 +756,22 @@ babl_space_from_icc (const char *icc_data, wY = icc_read (s15f16, offset + 8 + 4); wZ = icc_read (s15f16, offset + 8 + 4 * 2); - babl_free (state); + if (trc_red == babl_trc ("sRGB") && + trc_green == babl_trc ("sRGB") && + trc_blue == babl_trc ("sRGB") && + fabs(rx - 0.436042) < 0.001 && + fabs(ry - 0.222492) < 0.001 && + fabs(rz - 0.013916) < 0.001 && + fabs(gx - 0.385122) < 0.001 && + fabs(gy - 0.716915) < 0.001 && + fabs(gz - 0.097063) < 0.001 && + fabs(bx - 0.143053) < 0.001 && + fabs(by - 0.060609) < 0.001 && + fabs(bz - 0.713939) < 0.001) + { + babl_free (state); + return babl_space ("sRGB"); + } { Babl *ret = (void*)babl_space_from_rgbxyz_matrix (NULL, @@ -767,6 +782,8 @@ babl_space_from_icc (const char *icc_data, trc_red, trc_green, trc_blue); ret->space.description = descr; ret->space.copyright = copyright; + + babl_free (state); return ret; } } -- 2.30.2